import  torch
from    matplotlib import pyplot as plt
def plot_curve(data):    #画出loss曲线变化图
    fig=plt.figure()     #fig创建一个画布
    plt.plot(range(len(data)),data,color="blue")
    plt.legend(["value"],loc="upper right")   # 右上角标记
    plt.xlabel("step")   # x轴迭代次数
    plt.ylabel("value")  # y轴损失值
    plt.show()

def plot_image(img,label,name): #输出二维图像灰度图
    fig=plt.figure()
    for i in range(6):  # 6个图像，以两行三列，索引为i+1
        plt.subplot(2,3,i+1)
        plt.tight_layout()   # tight_layout紧密排版
        plt.imshow(img[i][0]*0.3081+0.1307,cmap="gray",interpolation="none")   # 均值是0.1307，标准差是0.3081，灰度图
        plt.title("{}:{}".format(name, label[i].item()))    # name:数据集名   label[i].item():数字
        # 把x、y轴坐标隐去
        plt.xticks([])
        plt.yticks([])
    plt.show()

def one_hot(label,depth=10):       #根据分类结果的数目将结果转换为一定的矩阵形式[n,1],n为分类结果的数目
    out=torch.zeros(label.size(0),depth)
    idx=torch.LongTensor(label).view(-1,1)
    out.scatter_(dim=1,index=idx,value=1)
    return out